package com.deep.transaction.demo7.service;


import com.deep.transaction.demo7.model.User;

public interface UserService {
    /**
     * 正常测试事务
     */
    public void test01(User user, User user2);

    /**
     * 测试事务自调用
     */
    public void test02(User user);

    public void testTransac(User user);
//
//    /**
//     * 事务自调用解决方式一：引入当前类实例
//     * @param user
//     */
//    public void test02Solution1(User user);
//
//    /**
//     * 事务自调用解决方式二：通过上下文获取当前类实例
//     * @param user
//     */
//    public void test02Solution2(User user);
//
//    /**
//     * 事务自调用解决方式三：通过aopContext获取当前代理对象
//     * @param user
//     */
//    public void test02Solution3(User user);

    /**
     * 测试PROPAGATION_REQUIRED传播行为
     *
     * @param user
     */
    public void testRequired(User user);

    /**
     * 测试PROPAGATION_SUPPORTS传播行为
     *
     * @param user
     */
    public void testSupports(User user);

    /**
     * 测试PROPAGATION_MANDATORY传播行为
     *
     * @param user
     */
    public void testMandatory(User user);

    /**
     * 测试PROPAGATION_REQUIRES_NEW传播行为
     *
     * @param user
     */
    public void testRequiresNew(User user, User user2);

    /**
     * 测试PROPAGATION_NOT_SUPPORTED传播行为
     *
     * @param user
     * @param user2
     */
    public void testNotSupported(User user, User user2);

    /**
     * 测试PROPAGATION_NEVER传播行为
     *
     * @param user
     * @param user2
     */
    public void testNever(User user, User user2);

    /**
     * 测试事务PROPAGATION_NESTED传播行为
     *
     * @param user
     * @param user2
     */
    public void testNested(User user, User user2);
}
